#在上述各个知识的打通之后，现在可以正式引入常量池这个概念。
# 上面讲到在Python中严格的讲是没有常量这个概念的
# 即使你通过约定俗成的方法定义了一个常量，但这个常量也只是一个变量，也就是说只要你对这个常量做出修改，这个常量原有对应的常量值引用计数就会变成0
# 由于常量等同于变量，它一样会被Python垃圾回收机制回收。
# 常量池的引入主要是为了避免频繁的创建和销毁对象而影响系统性能，其实现了对象的共享。
import sys

first_l = []  # 定义列表l存储[-5,256]中的所有整数的引用计数
add_l = []  # 定义列表add_l存储[-5,256]中的所有整数的引用计数加1后的引用计数
del_l = []  # 定义列表del_l存储[-5,256]中的所有整数的引用计数减1后的引用计数

for i in range(-5, 256):
    first_l.append(sys.getrefcount(i))
    add = i
    add_l.append(sys.getrefcount(i))
    del add
    del_l.append(sys.getrefcount(i))

first_l.sort()
add_l.sort()
del_l.sort()

print(f'min(first_l): {min(first_l)}')
print(f'min(add_l):{min(add_l)}')
print(f'min(del_l):{min(del_l)}')
